#include "resultsdialog.h"
#include "ui_resultsdialog.h"

ResultsDialog::ResultsDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ResultsDialog)
{
    ui->setupUi(this);

    connect(ui->pushButton, SIGNAL(clicked()),this, SLOT(close()));
    connect(ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(rowSelected(int,int)));
    connect(ui->showPreviewCheckbox, SIGNAL(toggled(bool)), this, SLOT(showPreview()));
    connect(ui->openButton, SIGNAL(clicked()), this, SLOT(openFoundImage()));
}

ResultsDialog::~ResultsDialog()
{
    delete ui;
}

void ResultsDialog::changeEvent(QEvent *e)
{
    QDialog::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}



void ResultsDialog::populateTable()
{
    //В этой функции заполняется таблицу результатов
    ui->tableWidget->setRowCount(this->resName.size());

    for (int i = 0; i < resName.size(); i++)
    {

        //Первый столбец таблицы: проценты
        QTableWidgetItem *item1 = new QTableWidgetItem();
        item1->setData(0, resPerc.at(i));
        ui->tableWidget->setItem(i,0, item1);
        item1->setTextAlignment(Qt::AlignCenter);

        //Второй столбец таблицы: превьюшка
        QTableWidgetItem *item2 = new QTableWidgetItem();
        QPixmap picture_preview(this->directory+QDir::separator()+resName.at(i));
        item2->setIcon(QIcon(picture_preview.scaled( QSize(100,100), Qt::KeepAspectRatio, Qt::SmoothTransformation)));
        ui->tableWidget->setItem(i,1, item2);
        item2->setTextAlignment(Qt::AlignCenter);

        //Третий столбец таблицы: имя файла
        QTableWidgetItem *item3 = new QTableWidgetItem(this->resName.at(i));
        ui->tableWidget->setItem(i,2, item3);
        //item3->setTextAlignment(Qt::AlignCenter);

        //Сразу сортируем по первой колонке
        ui->tableWidget->sortByColumn(0);

        //Ставим ширину первого столбца вручную, потому что дезигнер сакс
        ui->tableWidget->setColumnWidth(0,30);
        //Прячем столбец с превьюшками
        ui->tableWidget->setColumnHidden(1,true);


    }

}

void ResultsDialog::showPreview()
{
    if (ui->showPreviewCheckbox->isChecked() == true)
    {
        ui->tableWidget->verticalHeader()->setDefaultSectionSize(100);
    }
    else
    {
        ui->tableWidget->verticalHeader()->setDefaultSectionSize(20);
    }

    ui->tableWidget->setColumnHidden(1, !ui->showPreviewCheckbox->isChecked());
}

void ResultsDialog::rowSelected(int row, int)
{
    ui->percLabel->setText(ui->tableWidget->item(row,0)->text()+" %");
    ui->foundLabel->setText("<b>Найденое изображение № "+QString::number(row+1));
    QPixmap foundImage(this->directory+QDir::separator()+ui->tableWidget->item(row,2)->text());
    ui->foundImageLabel->setPixmap(foundImage.scaled(QSize(ui->foundImageLabel->width(),
                                                           ui->foundImageLabel->height()),
                                                     Qt::KeepAspectRatio, Qt::SmoothTransformation));

}

void ResultsDialog::setSourceImage(QString image){
    //Устанавливаем картинку, которую искали в соответствующий label
    QPixmap sourceimage(image);
    ui->sourceImageLabel->setPixmap(sourceimage.scaled(QSize(ui->sourceImageLabel->width(),
                                                             ui->sourceImageLabel->height()),
                                                       Qt::KeepAspectRatio, Qt::SmoothTransformation));
    //А еще добавляем имя папки, которую искали
    ui->resultFolderLabel->setText("<b>Результаты поиска в папке " + this->directory);
}

void ResultsDialog::openFoundImage()
{
    QString program = "/usr/bin/xdg-open";
    QStringList arguments;
    arguments << this->directory+QDir::separator()+ui->tableWidget->item(ui->tableWidget->currentRow(),2)->text();

    QProcess *myProcess = new QProcess();
    myProcess->start(program, arguments);
}
